package com.huahua.api.entity.vo.tablecomparison;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 行级对比详情类
 *
 * @author Huahua-Ai
 * @date 2025-07-12 23:00:00
 * @description 表示两个文本中对应行的详细对比信息
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class LineComparison {

    /**
     * 原文本中的行号（从1开始，如果不存在则为-1）
     */
    private Integer lineNumber1;

    /**
     * 新文本中的行号（从1开始，如果不存在则为-1）
     */
    private Integer lineNumber2;

    /**
     * 原文本中的行内容
     */
    private String content1;

    /**
     * 新文本中的行内容
     */
    private String content2;

    /**
     * 对比状态
     * EQUAL - 两行完全相同
     * MODIFIED - 行内容有修改
     * ADDED - 仅在新文本中存在
     * DELETED - 仅在原文本中存在
     */
    private ComparisonStatus status;

    /**
     * 字符级差异（当status为MODIFIED时）
     */
    private List<CharacterDifference> characterDiffs;

    /**
     * 相似度（0-100，当status为MODIFIED时）
     */
    private Double similarity;

    /**
     * 是否是重要变更（根据业务规则判断）
     */
    private Boolean isImportant;

    /**
     * 变更描述（可选）
     */
    private String changeDescription;

    /**
     * 对比状态枚举
     */
    public enum ComparisonStatus {
        EQUAL,
        MODIFIED,
        ADDED,
        DELETED
    }
}
